Cloud computing is gaining popularity in providing information technology (IT) services. Cloud computing is network-based computing (e.g., Internet-based), whereby shared resources, software and information are provided to computers and other devices on-demand, just like electricity. Today different technologies exist to provide IT services in the cloud, e.g.: virtualization and multi-tenancy.
Server virtualization techniques allow a service provider to operate multiple applications independently in different virtual machines (VM) on the same physical hardware (e.g., different VMs for different clients, and/or different VMs for different requests from the same clients). Updates to a specific application running in a VM are not visible to other VMs. Pre-packaged VM images could be used to update each VM efficiently when all VMs run the same software. For example, FIG. 1 shows a prior art system 100 in which VM 104 and VM 108 are hosted by a server 102. Users may access applications running on App Server 106 or App Server 110 and save data to DB Sever 112 or 114 respectively. The DB Servers 112 and 114 may be software database applications running on dedicated hardware separate from the Server 102. An upgrade to a software application running on the App Server 106 will not be visible to applications on App Server 110 in VM 108. However, if App Server 106 and App Server 110 run the same software applications, one VM image containing upgraded software applications for App Server 106 may be used for both VM 104 and VM 108 (e.g., loading VM 104 and VM 108 in the server 102 from the same upgraded virtual machine image).
Multi-tenancy architectures provide services to users of multiple/different companies by sharing a single application running on the same hardware resources (e.g., same system landscape). Usually an application server hosts the front end layer of the application to interact with customers and a database (DB) server is used to store company data in separate tenants for each customer, such as the known multi-tenancy architecture 200 shown in FIG. 2. The multi-tenancy architecture 200 contains an application running on application server 204 that saves data to DB server 220. The application server 204 may be hosted by a server 202 but the DB server 220 may be hosted by the same or other dedicated hardware. The DB Server 220 typically stores tenant 1's data 226 and tenant 2's data 228 separately. Updates to the application in the App Server 204 and DB Server 220 are visible to all customers because they are shared by all customers.
Many SaaS offerings (e.g., SAP Business ByDesign, SAP eSourcing by SAP®) today employ multi-tenancy in order to optimize operational costs and hardware utilization. Many SaaS applications may be installed on more than one set of hardware resources to run the same version of a multi-tenant aware application. Each installed multi-tenant aware application may include at least an application on an application server and a database on a DB server. Currently, the application server and the DB server and other software systems required for the multi-tenant aware application are distributed among several hardware pieces (e.g., computer servers). Over time the total number and size of hardware resources running the multi-tenant aware applications will grow due to increased performance requirements. Typically, all of the installed applications need to be upgraded at the same time to avoid maintenance of different application versions. However, each installed package of the multi-tenant aware application is updated on all relevant hardware resources individually and manually. Hence costs associated with upgrading the applications on many hardware resources will become a determining factor that will diminish the cost advantage of multi-tenancy architectures significantly. Accordingly, there is a need in the art for simplifying the necessary steps of a software upgrade and bringing down the costs associated with maintaining a system landscape running a SaaS multi-tenant application.